package com.net.oil.user.contract;

import com.net.oil.base.IBaseModel;
import com.net.oil.user.bean.UserInfo;

/**
 * 作者：lch
 * 时间：2018/3/14:9:48
 * 邮箱：245850413@qq.com
 * 说明：
 */

public interface LoginContract {
    interface Model extends IBaseModel{

        /**
         * 登陆
         * @param phone 手机号
         * @param password  密码
         */
        void login(String phone, String password);

        /**
         * 获取手机验证码
         *
         * @param phone 手机号
         * @param ptt   是否是语音
         */
        void getPhoneCode(String phone, boolean ptt);

        /**
         * 根据验证码登陆
         * @param phone     手机号
         * @param code      验证码
         */
        void loginByAuthCode(String phone, String code);
    }

    interface View {

        /**
         * 登陆成功
         * @param userInfo   返回用户信息
         */
        void loginSuccess(UserInfo userInfo);

        /**
         * 登陆失败
         */
        void loginFailed();

        /**
         * 获取验证码成功
         */
        void getPhoneCodeSuccess();

        /**
         * 获取验证码失败
         */
        void getPhoneCodeFailed();

        /**
         * 根据验证码登陆成功
         * @param userInfo  用户信息
         */
        void loginByAuthCodeSuccess(UserInfo userInfo);

        /**
         * 根据验证码登陆失败
         */
        void loginByAuthCodeFailed();
    }

    interface Presenter {
        /**
         * 登陆
         * @param phone 手机号
         * @param password  密码
         */
        void login(String phone, String password);

        /**
         * 登陆成功
         * @param userInfo   返回用户信息
         */
        void loginSuccess(UserInfo userInfo);

        /**
         * 登陆失败
         */
        void loginFailed();

        /**
         * 获取手机验证码
         *
         * @param phone 手机号
         * @param ptt   是否是语音
         */
        void getPhoneCode(String phone, boolean ptt);

        /**
         * 获取验证码成功
         */
        void getPhoneCodeSuccess();

        /**
         * 获取验证码失败
         */
        void getPhoneCodeFailed();

        /**
         * 根据验证码登陆
         * @param phone     手机号
         * @param code      验证码
         */
        void loginByAuthCode(String phone, String code);

        /**
         * 根据验证码登陆成功
         * @param userInfo  用户信息
         */
        void loginByAuthCodeSuccess(UserInfo userInfo);

        /**
         * 根据验证码登陆失败
         */
        void loginByAuthCodeFailed();
    }
}
